SHOW¶
DESC, DESCRIBE¶
DESC 또는 DESCRIBE 문은 테이블의 칼럼 정보를 출력하며 SHOW COLUMNS 문과 같다. 보다 자세한 사항은 SHOW COLUMNS를 참고한다.
DESC tbl_name
DESCRIBE tbl_name
EXPLAIN¶
EXPLAIN 문은 테이블의 칼럼 정보를 출력하며 SHOW COLUMNS 문과 같다. 보다 자세한 사항은 SHOW COLUMNS를 참고한다.
EXPLAIN tbl_name
SHOW TABLES¶
데이터베이스의 전체 테이블 이름 목록을 출력한다. 결과 칼럼의 이름은 tables_in_<데이터베이스 이름> 이 되며 하나의 칼럼을 지닌다. LIKE 절을 사용하면 이와 매칭되는 테이블 이름을 검색할 수 있으며, WHERE 절을 사용하면 좀더 일반적인 조건으로 테이블 이름을 검색할 수 있다. SHOW FULL TABLES 는 table_type 이라는 이름의 두 번째 칼럼을 함께 출력하며, 테이블은 BASE TABLE, 뷰는 VIEW 라는 값을 가진다.
SHOW [FULL] TABLES [LIKE 'pattern' | WHERE expr]
다음은 demodb 를 가지고 해당 질의를 실행한 결과이다.
SHOW TABLES;
Tables_in_demodb
======================
'athlete'
'code'
'event'
'game'
'history'
'nation'
'olympic'
'participant'
'record'
'stadium'
SHOW FULL TABLES;
Tables_in_demodb Table_type
============================================
'athlete' 'BASE TABLE'
'code' 'BASE TABLE'
'event' 'BASE TABLE'
'game' 'BASE TABLE'
'history' 'BASE TABLE'
'nation' 'BASE TABLE'
'olympic' 'BASE TABLE'
'participant' 'BASE TABLE'
'record' 'BASE TABLE'
'stadium' 'BASE TABLE'
SHOW FULL TABLES LIKE '%c%';
Tables_in_demodb Table_type
============================================
'code' 'BASE TABLE'
'olympic' 'BASE TABLE'
'participant' 'BASE TABLE'
'record' 'BASE TABLE'
SHOW FULL TABLES WHERE table_type = 'BASE TABLE' and TABLES_IN_demodb LIKE '%co%';
Tables_in_demodb Table_type
============================================
'code' 'BASE TABLE'
'record' 'BASE TABLE'
SHOW COLUMNS¶
테이블의 칼럼 정보를 출력한다. LIKE 절을 사용하면 이와 매칭되는 칼럼 이름을 검색할 수 있다. WHERE 절을 사용하면 "모든 SHOW 문에 대한 일반적인 고려 사항"과 같이 좀 더 일반적인 조건으로 칼럼 이름을 검색할 수 있다.
Field : 칼럼 이름
Type : 칼럼의 데이터 타입.
Null : NULL 을 저장할 수 있으면 YES, 불가능하면 NO
- Key : 칼럼에 인덱스가 걸려있는지 여부. 테이블의 주어진 칼럼에 하나 이상의 키 값이 존재하면 PRI, UNI, MUL의 순서 중 가장 먼저 나타나는 것 하나만 출력한다.
- 공백이면 인덱스를 타지 않거나 다중 칼럼 인덱스에서 첫번째 칼럼이 아니거나, 비고유(non-unique) 인덱스이다.
- PRI 값이면 기본 키이거나 다중 칼럼 기본 키이다.
- UNI 값이면 고유(unique) 인덱스이다. (고유 인덱스는 여러 개의 NULL값을 허용하지만, NOT NULL 제약 조건을 설정할 수도 있다.)
- MUL 값이면 주어진 값이 칼럼 내에서 여러 번 나타나는 것을 허용하는 비고유 인덱스의 첫번째 칼럼이다. 복합 고유 인덱스를 구성하는 칼럼이면 MUL 값이 된다. 칼럼 값들의 결합은 고유일 수 있으나 각 칼럼의 값은 여러 번 나타날 수 있기 때문이다.
Default : 칼럼에 정의된 기본값
Extra : 주어진 칼럼에 대해 가능한 추가 정보. AUTO_INCREMENT 속성인 칼럼은 'auto_increment'라는 값을 갖는다.
SHOW FIELDS 는 SHOW COLUMNS 와 같은 구문이다.
DESCRIBE (또는 줄여서 DESC) 문과 EXPLAIN 문은 SHOW COLUMNS와 같은 정보를 제공하지만, LIKE 절 또는 WHERE 절은 지원하지 않는다.
SHOW COLUMNS {FROM | IN} tbl_name [LIKE 'pattern' | WHERE expr]
다음은 해당 질의들을 수행한 예이다.
SHOW COLUMNS FROM athlete;
Field Type Null Key Default Extra
================================================================================================================
'code' 'INTEGER' 'NO' 'PRI' NULL 'auto_increment'
'name' 'VARCHAR(40)' 'NO' '' NULL ''
'gender' 'CHAR(1)' 'YES' '' NULL ''
'nation_code' 'CHAR(3)' 'YES' '' NULL ''
'event' 'VARCHAR(30)' 'YES' '' NULL ''
SHOW COLUMNS FROM athlete WHERE field LIKE '%c%';
Field Type Null Key Default Extra
================================================================================================================
'code' 'INTEGER' 'NO' 'PRI' NULL 'auto_increment'
'nation_code' 'CHAR(3)' 'YES' '' NULL ''
SHOW COLUMNS FROM athlete WHERE "type" = 'INTEGER' and "key"='PRI' AND extra='auto_increment';
Field Type Null Key Default Extra
================================================================================================================
'code' 'INTEGER' 'NO' 'PRI' NULL 'auto_increment'
SHOW INDEX¶
SHOW INDEX 문은 인덱스 정보를 출력한다. 해당 질의는 다음과 같은 칼럼을 가진다.
Table : 테이블 이름
- Non_unique
- 0 : 데이터 중복 불가능
- 1 : 데이터 중복 가능
Key_name : 인덱스 이름
Seq_in_index : 인덱스에 있는 칼럼의 일련번호. 1부터 시작한다.
Column_name : 칼럼 이름
Collation : 칼럼이 인덱스에서 정렬되는 방법. 'A'는 오름차순(Ascending), NULL 은 비정렬을 의미한다.
Cardinality : 인덱스에서 유일한 값의 개수를 측정하는 수치. 카디널리티가 높을수록 인덱스를 이용할 기회가 높아진다. 이 값은 SHOW INDEX 가 실행되면 매번 업데이트된다.
Sub_part : 칼럼의 일부만 인덱스된 경우 인덱스된 문자의 바이트 수. 칼럼 전체가 인덱스되면 NULL 이다.
Packed : 키가 어떻게 팩되었는지(packed)를 나타냄. 팩되지 않은 경우 NULL .
Null : 칼럼이 NULL 을 포함할 수 있으면 YES, 그렇지 않으면 NO.
Index_type : 사용되는 인덱스(현재 BTREE만 지원한다).
SHOW {INDEX | INDEXES | KEYS } {FROM | IN} tbl_name
다음은 해당 질의를 실행한 결과이다.
SHOW INDEX IN athlete;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type
==========================================================================================================================================
'athlete' 0 'pk_athlete_code' 1 'code' 'A' 6677 NULL NULL 'NO' 'BTREE'
CREATE TABLE t1 (i1 INTEGER , i2 INTEGER NOT NULL, i3 INTEGER UNIQUE, s1 VARCHAR(10), s2 VARCHAR(10), s3 VARCHAR(10) UNIQUE);
CREATE INDEX i_t1_i1 ON t1 (i1 DESC);
CREATE INDEX i_t1_s1 ON t1 (s1 (7));
CREATE INDEX i_t1_i1_s1 ON t1 (i1, s1);
CREATE UNIQUE INDEX i_t1_i2_s2 ON t1 (i2, s2);
SHOW INDEXES FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type
==========================================================================================================================================
't1' 0 'i_t1_i2_s2' 1 'i2' 'A' 0 NULL NULL 'NO' 'BTREE'
't1' 0 'i_t1_i2_s2' 2 's2' 'A' 0 NULL NULL 'YES' 'BTREE'
't1' 0 'u_t1_i3' 1 'i3' 'A' 0 NULL NULL 'YES' 'BTREE'
't1' 0 'u_t1_s3' 1 's3' 'A' 0 NULL NULL 'YES' 'BTREE'
't1' 1 'i_t1_i1' 1 'i1' NULL 0 NULL NULL 'YES' 'BTREE'
't1' 1 'i_t1_i1_s1' 1 'i1' 'A' 0 NULL NULL 'YES' 'BTREE'
't1' 1 'i_t1_i1_s1' 2 's1' 'A' 0 NULL NULL 'YES' 'BTREE'
't1' 1 'i_t1_s1' 1 's1' 'A' 0 7 NULL 'YES' 'BTREE'
SHOW GRANTS¶
SHOW GRANT 문은 데이터베이스의 사용자 계정에 부여된 권한을 출력한다.
SHOW GRANTS FOR 'user'
CREATE TABLE testgrant (id INT);
CREATE USER user1;
GRANT INSERT,SELECT ON testgrant TO user1;
SHOW GRANTS FOR user1;
Grants for USER1
======================
'GRANT INSERT, SELECT ON testgrant TO USER1'
SHOW CREATE VIEW¶
SHOW CREATE VIEW 문은 뷰 이름을 지정하면 해당 CREATE VIEW 문을 출력한다.
SHOW CREATE VIEW view_name
다음은 해당 질의를 실행한 결과이다.
SHOW CREATE VIEW db_class;
View Create View
========================================
'db_class' 'SELECT c.class_name, CAST(c.owner.name AS VARCHAR(255)), CASE c.class_type WHEN 0 THEN 'CLASS' WHEN 1 THEN 'VCLASS' ELSE
'UNKNOW' END, CASE WHEN MOD(c.is_system_class, 2) = 1 THEN 'YES' ELSE 'NO' END, CASE WHEN c.sub_classes IS NULL THEN 'NO'
ELSE NVL((SELECT 'YES' FROM _db_partition p WHERE p.class_of = c and p.pname IS NULL), 'NO') END, CASE WHEN
MOD(c.is_system_class / 8, 2) = 1 THEN 'YES' ELSE 'NO' END FROM _db_class c WHERE CURRENT_USER = 'DBA' OR {c.owner.name}
SUBSETEQ ( SELECT SET{CURRENT_USER} + COALESCE(SUM(SET{t.g.name}), SET{}) FROM db_user u, TABLE(groups) AS t(g) WHERE
u.name = CURRENT_USER) OR {c} SUBSETEQ ( SELECT SUM(SET{au.class_of}) FROM _db_auth au WHERE {au.grantee.name} SUBSETEQ
( SELECT SET{CURRENT_USER} + COALESCE(SUM(SET{t.g.name}), SET{}) FROM db_user u, TABLE(groups) AS t(g) WHERE u.name =
CURRENT_USER) AND au.auth_type = 'SELECT')'
SHOW EXEC STATISTICS¶
SHOW EXEC STATISTICS 문은 실행한 질의들의 실행 통계 정보를 출력한다.
- 통계 정보 수집을 시작하려면 세션 변수 @collect_exec_stats 의 값을 1로 설정하며, 종료하려면 0으로 설정한다.
- 통계 정보 수집 결과를 출력한다.
- SHOW EXEC STATISTICS는 data_page_fetches, data_page_dirties, data_page_ioreads, data_page_iowrites 이렇게 4가지 항목의 데이터 페이지 통계 정보를 출력하며, 결과 칼럼은 통계 정보 이름과 값에 해당하는 variable 칼럼과 value 칼럼으로 구성된다. SHOW EXEC STATISTICS 문을 실행하고 나면 그동안 누적되었던 통계 정보가 초기화된다.
- SHOW EXEC STATISTICS ALL은 모든 항목의 통계 정보를 출력한다.
통계 정보 각 항목에 대한 자세한 설명은 서버 실행 통계 정보 출력을 참고한다.
SHOW EXEC STATISTICS [ALL]
다음은 해당 질의를 실행한 결과이다.
-- set session variable @collect_exec_stats as 1 to start collecting the statistical information.
SET @collect_exec_stats = 1;
SELECT * FROM db_class;
-- print the statistical information of the data pages.
SHOW EXEC STATISTICS;
variable value
============================================
'data_page_fetches' 332
'data_page_dirties' 85
'data_page_ioreads' 18
'data_page_iowrites' 28
SELECT * FROM db_index;
-- print all of the statistical information.
SHOW EXEC STATISTICS ALL;
variable value
============================================
'file_creates' 0
'file_removes' 0
'file_ioreads' 6
'file_iowrites' 0
'file_iosynches' 0
'data_page_fetches' 548
'data_page_dirties' 34
'data_page_ioreads' 6
'data_page_iowrites' 0
'data_page_victims' 0
'data_page_iowrites_for_replacement' 0
'log_page_ioreads' 0
'log_page_iowrites' 0
'log_append_records' 0
'log_checkpoints' 0
'log_wals' 0
'page_locks_acquired' 13
'object_locks_acquired' 9
'page_locks_converted' 0
'object_locks_converted' 0
'page_locks_re-requested' 0
'object_locks_re-requested' 8
'page_locks_waits' 0
'object_locks_waits' 0
'tran_commits' 3
'tran_rollbacks' 0
'tran_savepoints' 0
'tran_start_topops' 6
'tran_end_topops' 6
'tran_interrupts' 0
'btree_inserts' 0
'btree_deletes' 0
'btree_updates' 0
'btree_covered' 0
'btree_noncovered' 2
'btree_resumes' 0
'query_selects' 4
'query_inserts' 0
'query_deletes' 0
'query_updates' 0
'query_sscans' 2
'query_iscans' 4
'query_lscans' 0
'query_setscans' 2
'query_methscans' 0
'query_nljoins' 2
'query_mjoins' 0
'query_objfetches' 0
'network_requests' 88
'adaptive_flush_pages' 0
'adaptive_flush_log_pages' 0
'adaptive_flush_max_pages' 0
'network_requests' 88
'adaptive_flush_pages' 0
'adaptive_flush_log_pages' 0
'adaptive_flush_max_pages' 0